【PHP】型 – 変数と値の性質(整数型/浮動小数点数型/文字列型/論理型)
変数や値には『型』と呼ばれる性質があります。
型によってプログラムの動作が変わるため、処理をコントロールするために必要な知識です。
ここでは型について解説します。
検証環境
型
型は変数や値の性質の定義です。
『種類』としてイメージすると分かりやすく、例えば1234
という値があるとき、この値が整数値なのか文字列なのかを判別する要素が型になります。
種類
PHPの代表的な型は次の通りです。
型 | 意味 | 例 |
---|---|---|
整数型 | 小数点数以下がない数値 | 1234 |
浮動小数点数型 | 小数点数以下がある数値 | 5.678 |
文字列型 | 文字を並べたもの | "Hello World" |
論理型 | 真偽を表すもの | true /false |
配列型 | 複数のデータを順に並べたもの | [1,2,3,4] |
オブジェクト型 | クラスのオブジェクトなど | DateTime |
NULL型 | 何もないことを表すもの | NULL |
型の確認
変数や値の型を確認するには、gettype
関数を使います。
関数が未学習の方は、ここでは次の書き方のみ覚えておきましょう。
gettype(変数または値);
gettype
関数は丸括弧(()
)内の変数または値の型を文字列で取得します。
例えば、整数値123
の型の確認は次のようになります。
<?php
___ih_hl_start
echo gettype(123);
___ih_hl_end
?>
$ php sample.php
integer
gettype
関数で取得した値をecho
で出力しています。
実行するとinteger
と出力しますが、integer
は整数型を意味する表記です。
型は日本語ではないため、読み変えてください。
型 | gettypeの表記 |
---|---|
整数型 | integer |
浮動小数点数型 | float / double |
文字列型 | string |
論理型 | boolean |
配列型 | array |
オブジェクト型 | object |
NULL型 | NULL |
整数型、浮動小数点数型、文字列型、論理型の4つは単一の値を表すスカラー型と総称されます。
以降は基本的な型でスカラー型について解説します。
整数型
整数型は小数点数以下がない数値を表す型です。
『整数値』や『整数値を記憶する変数』は整数型になります。
<?php
$var = 1234;
// 整数値の型
___ih_hl_start
echo '[ 1234 ] : '.gettype(1234)."\n";
___ih_hl_end
// 整数値を記憶する変数の型
___ih_hl_start
echo '[ $var ] : '.gettype($var)."\n";
___ih_hl_end
?>
$ php sample.php
[ 1234 ] : integer
[ $var ] : integer
浮動小数点数型
浮動小数点数型は小数点数以下がある数値を表す型です。
『浮動小数点数値』や『浮動小数点数値を記憶する変数』は浮動小数点数型になります。
floatとdoubleの2種類の型があり、doubleの方が小数点数以下の桁数を多く扱え、gettype()の仕様ではfloatの場合でもdoubleを取得します。
<?php
$var = 1234.567;
// 浮動小数点数値の型
___ih_hl_start
echo '[ 1234.567 ] : '.gettype(1234.567)."\n";
___ih_hl_end
// 浮動小数点数値を記憶する変数の型
___ih_hl_start
echo '[ $var ] : '.gettype($var)."\n";
___ih_hl_end
?>
$ php sample.php
[ 1234.567 ] : double
[ $var ] : double
文字列型
文字列型は文字を羅列した値を表す型です。
『文字列値』や『文字列値を記憶する変数』は文字列型になります。
<?php
$var = 'Hello World!';
// 文字列値の型
___ih_hl_start
echo "[ 'Hello World!' ] : ".gettype('Hello World!')."\n";
___ih_hl_end
// 文字列値を記憶する変数の型
___ih_hl_start
echo '[ $var ] : '.gettype($var)."\n";
___ih_hl_end
?>
$ php sample.php
[ 'Hello World!' ] : string
[ $var ] : string
論理型
論理型は真偽を表す型です。
『真偽値』や『真偽値を記憶する変数』は文字列型になります。
<?php
$var = true;
// 真偽値の型
___ih_hl_start
echo '[ true ] : '.gettype(true)."\n";
___ih_hl_end
// 真偽値を記憶する変数の型
___ih_hl_start
echo '[ $var ] : '.gettype($var)."\n";
___ih_hl_end
?>
$ php sample.php
[ true ] : boolean
[ $var ] : boolean
変数と値の型の違い
『変数の型』と『値の型』は意味が異なります。
『変数の型』は変数が扱える型を意味し、『値の型』は値そのものの型を表ます。
プログラミングには『変数は自身と同じ型の値のみ記憶できる』という基本的な考え方があります。
そのため、変数に異なる型の値を代入する場合は値を変数と同じ型に変換する必要があります。
例えば、文字列型の変数に、整数型の123
を代入する場合、123
を文字列型に変換する必要があります。
ただし、PHPでは変数と値に応じて自動で型変換が行われるため、型変換について意識せずプログラミングすることができます。
この辺りの特性は動的型付け/静的型付けと呼ばれるもので、興味がある方は調べてみましょう。
演習問題
次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。
- 実行結果の1行目の
integer
は値(リテラル)の型で出力 - 実行結果の2行目の
integer
は変数の型で出力
value : integer
variable : integer
次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。
- 実行結果の1行目の
double
は値(リテラル)の型で出力 - 実行結果の2行目の
double
は変数の型で出力
value : double
variable : double
次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。
- 実行結果の1行目の
string
は値(リテラル)の型で出力 - 実行結果の2行目の
string
は変数の型で出力
value : string
variable : string
次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。
- 実行結果の1行目の
boolean
は値(リテラル)の型で出力 - 実行結果の2行目の
boolean
は変数の型で出力
value : boolean
variable : boolean